home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / SWAG / SWAGA_C / COMM.SWG / 0034_Uart Detection.pas < prev    next >
Pascal/Delphi Source File  |  1994-01-27  |  1KB  |  55 lines

  1. {
  2. > I'm looking for a pascal V6 program to detect the UART-type installed.
  3. }
  4.  
  5. program ComType;
  6.  
  7. { Detect the type/presence of a comport-chip.
  8.   Norbert Igl, 5/92 }
  9.  
  10. uses
  11.   crt;
  12.  
  13. Const ComPortText :
  14.     Array[0..4] of String[11] =
  15.          ('    N/A    ',
  16.           '8250/8250B ',
  17.           '8250A/16450',
  18.           '   16550A  ',
  19.           '   16550N  ');
  20.     IIR     = 2;
  21.     SCRATCH = 7;
  22.  
  23. Var   PortAdr : Array[1..4] of Word absolute $40:0;
  24.  
  25. function ComPortType(ComX:byte):byte;
  26.  
  27. BEGIN
  28.   ComPortType:=0;
  29.   if (PortAdr[ComX] =0)
  30.   or (Port[PortAdr[ComX]+ IIR ] and $30 <> 0)
  31.      then exit;                                       {No ComPort !}
  32.   Port[PortAdr[ComX]+ IIR ] := 1;                     {Test: enable FIFO}
  33.   if (Port[PortAdr[ComX]+IIR] and $C0) = $C0          {enabled ?}
  34.   then ComPortType := 3
  35.   else If (Port[PortAdr[ComX]+IIR] and $80) = $80     {16550,old version..}
  36.        then ComPortType := 4
  37.        else begin
  38.        Port[Portadr[ComX]+SCRATCH]:=$AA;
  39.        if Port [Portadr[ComX]+SCRATCH]=$AA            {w/ scratch reg. ?}
  40.            then ComPortType:= 2
  41.            else ComPortType:= 1;
  42.        end;
  43. END;
  44.  
  45. var com : byte;
  46.  
  47. begin
  48.   clrscr;
  49.   writeln('COMPORT  Chiptest':75);
  50.   writeln('Freeware by Norbert Igl, Germany':75);
  51.   writeln;
  52.   for com := 1 to 4 do
  53.      writeln('COM:',com,':  ', ComPortText[ComPortType(com)]);
  54. end.
  55.